package com.ssy.lingxi.contract.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.contract.model.vo.sign.request.*;
import com.ssy.lingxi.contract.model.vo.sign.response.ContractTemplateListResponse;
import com.ssy.lingxi.contract.model.vo.sign.response.ContractTemplateResponse;
import com.ssy.lingxi.contract.model.vo.sign.response.ContractTemplateSelectResponse;
import com.ssy.lingxi.contract.model.vo.sign.response.PreviewContractTemplateResponse;

import java.util.List;

/**
 * 合同模板服务类
 *
 * @author yzc
 * @version 2.0.0
 * @date 2020/8/20
 */
public interface IContractTemplateService {

    /**
     * 合同模板分页列表
     * @param request 请求参数
     * @param sysUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<ContractTemplateListResponse>> pageContractTemplate(ContractTemplateListRequest request, UserLoginCacheDTO sysUser);

    /**
     * 合同模板查询
     * @param request 请求参数
     * @return 返回结果
     */
    Wrapper<ContractTemplateResponse> getContractTemplate(ContractTemplateIdRequest request);

    /**
     * 合同模板添加
     * @param request 请求参数
     * @param sysUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> addContractTemplate(ContractTemplateRequest request, UserLoginCacheDTO sysUser);

    /**
     * 合同模板修改
     * @param request 请求参数
     * @param sysUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> updateContractTemplate(ContractTemplateRequest request, UserLoginCacheDTO sysUser);

    /**
     * 合同模板停用/启用
     * @param request 请求参数
     * @param sysUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> updateStatusContractTemplate(ContractTemplateStateRequest request, UserLoginCacheDTO sysUser);

    /**
     * 合同模板删除
     * @param request 请求参数
     * @param sysUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> deleteContractTemplate(ContractTemplateIdRequest request, UserLoginCacheDTO sysUser);

    /**
     * 合同模板查询全部(状态为有效)
     * @param sysUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<List<ContractTemplateSelectResponse>> listContractTemplate(UserLoginCacheDTO sysUser);

    /**
     * 合同模板预览
     * @param request 请求参数
     * @return 返回结果
     */
    Wrapper<PreviewContractTemplateResponse> previewContractTemplate(PreviewContractTemplateRequest request);
}
